package cn.melonlib.apis.support.annos;



import cn.melonlib.apis.support.enums.ApiCredentialsAction;
import cn.melonlib.apis.support.enums.ApiModuleType;
import cn.melonlib.apis.support.enums.ApiTenantAction;

import java.lang.annotation.*;

/**
 * 网络接口动态代理定义
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApiModule {

    /**
     * 注入bean的名词，如果不写默认是类名词首字符小写加上ApiModule
     * @return
     */
    String value() default "";

    /**
     * 访问接口前缀
     * @return
     */
    String prefix() default "";
    /**
     * 请求接口配置信息（spring bean name）
     * @return
     */
    String apiModuleConfig();

    /**
     * 请求接口接口类型
     * @return
     */
    ApiModuleType apiModuleType() default ApiModuleType.GRAPHQL;

    /**
     * 认证类型
     * @return
     */
    ApiCredentialsAction apiCredentialsAction() default ApiCredentialsAction.HEADER;

    /**
     * 需要租户
     * @return
     */
    ApiTenantAction tenant() default ApiTenantAction.HEADER;

}
